DTLS(Datagram Transport Layer Security)とは
TLSのUDPversionである。
TLSとは
安全なインターネット通信を実現するためのセキュリティプロトコル(SSL3.0は2015年,IETFによって使用は禁止された)。TLSはSSLの次世代規格
SSL/TLSは、
- 共通鍵暗号方式と公開鍵暗号方式の両方を用いて、データ通信を暗号化することで通信の盗聴を防ぐ
- SSL/TLS暗号通信時に、ウェブサイト所有者の情報・送信情報の暗号化に必要な鍵・証明書発行社の署名データを持つSSL証明書を利用する。ユーザーは、FQDNと、SSL証明書(のコモンネーム)が一致することを確認できる。これによって、サービスの運営元を保証する。
https://gyazo.com/efb4b183e72df2e8d1080c80fcf53a84
HTTPS通信は、SSLを利用したwebサーバーとクライアントが通信するためのプロトコル。
https://gyazo.com/1a4fc5522a0cf075dbe6a7ab9de348b3
HTTPSはHTTPと同じ、5~7層で動くプロトコル。HTTPSは SSLを利用した通信プロトコルであるが、SSLはどのレイヤーにおけるプロトコルか
- セッション層もしくはトランスポート層、およびその中間という意見がある。
インターネットは、実際にOSI参照モデルに従っている訳では無いので、解釈が難しい。
RFCによると、アプリケーション層とは独立しており、(TLS is application protocol independent)
「アプリケーション層において実現された新たなトランスポート層である」という意見もあり、これは腑に落ちる感じがある
参照
SSL/TLSは第何層でしょうか??
SSL/TLSは何層?
TLSは多くの場合、コネクション型のトランスポート層プロトコル(通常はTCP)とアプリケーション層のあいだにおいて使われる。
SSL/TLSのアプリケーション層への適用
SSL/TLSは、基本的にはHTTPへの適用を意識して設計されているが、アプリケーション層の特定のプロトコルには依存していないため、どのアプリケーション層にも適用が可能。
HTTPS/SMTPS/FTPSなど様々
結論
SSL/TLSプロトコルは、OSI参照モデルには従っておらず、トランスポート層とセッション層の間に位置し、その上で各アプリケーションプロトコルが動く
TLS (Transport Layer Security) は、トランスポート層 (TCP など) の上位層として配置されます。
TLSは多くの場合、コネクション型のトランスポート層プロトコル(通常はTCP)とアプリケーション層のあいだにおいて使われる。
SSL/TLSは、基本的にはHTTPへの適用を意識して設計されているが、アプリケーション層の特定のプロトコルには依存していないため、どのアプリケーション層にも適用が可能。
つまり、トランスポート層とセッション層の間に位置し、各アプリケーションプロトコルはその上に乗りかかる。
https://gyazo.com/c577f9bb19a289699c801e3989e2ca8d
TLSの内部層は二層ある
TLS層の中には、
- TLSレコード層 : 上位プロトコル(TLS Handshake/TLS Alert/TLS Change CIpher Spec/HTTP1)をカプセル化するために使用される
- TLSハンドシェイク層 : TLS Handshale/TLS Alert/TLS Change Cipher Specプロトコルからなる。
HTTPSの場合(オレンジの枠がHTTPSプロトコルとなる)
https://gyazo.com/88b93556d7b55099c5136889d08dc801
HTTP(1)の部分がFTPプロトコルになったらオレンジの枠はFTPSプロトコルとなる
DTLSとは
TCPをトランスポート層とするアプリケーションで、TLSが広く使われることから、トランスポート層がUDPの場合にもTLSと同様のセキュリティを確保する目的でDTLSが設計された。
基本的には、TLSのUDP版だと考えて良い。ただし、UDPの機能に合わせるため最小限の追加・修正が加えられている。
具体的な修正点
- TLSではストリームを暗号化するのに対し、DTLSではUDPパケットの単位で暗号化が閉じるように修正されている。また、セキュリティツールのネゴシエーション時、一定時間内に応答が無い場合には、メッセージを再送すること。これによってパケット損失などの伝送誤りに対処する。